package com.yubest.demo;

import cn.hutool.core.convert.Convert;

import java.nio.file.Files;
import java.nio.file.Paths;

/**
 * 针对Pc客户端缓存的uc文件进行解析
 * @Author hweiyu
 * @Description
 * @Date 2021/2/25 17:16
 */
public class PcCommand implements Command {

    /**
     * 将二进制文件流对163进行无符号异或计算，即得到解密后的二进制流文件，另存为mp3格式即可
     */
    @Override
    public void execute(Context context) {
        if (!isValidContext(context)) {
            System.out.println("文件路径为空");
            return;
        }
        try {
            byte[] bytes = Files.readAllBytes(Paths.get(context.getInPath()));
            int t;
            //16进制A3
            int xor = 163;
            for (int i = 0; i < bytes.length; i++) {
                //byte转无符号int
                t = Byte.toUnsignedInt(bytes[i]);
                //异或计算
                bytes[i] = Convert.intToByte(t ^ xor);
            }
            Files.write(Paths.get(context.getOutPath()), bytes);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
